<head>
  <title>Destroy and Hide Element in Animation End Event</title>
  <style type="text/css" media="screen">
    .box {
      height: 100px;
      width: 100px;
      margin: 10px;
      background-color: blue;
      animation-duration: 0.2s;
    }

    @keyframes move {
      from { transform: translate(0px, 0px); }
      to { transform: translate(100px, 0px); }
    }
  </style>
  <script src="../../resources/testharness.js"></script>
  <script src="../../resources/testharnessreport.js"></script>
  <script type="text/javascript" charset="utf-8">
    var test = async_test("Tests element removal and hiding within the animationstart event handler. Should not crash");

    var numDone = 0;
    function animationStarted()
    {
      ++numDone;
      if (numDone == 2) {
        if (window.GCController)
          GCController.collect();

        test.done();
      }
    }

    function startTest()
    {
      var box1 = document.getElementById('box1');
      box1.addEventListener('animationstart', function() {
        box1.parentNode.removeChild(box1);
        animationStarted();
      }, false);
      box1.style.animationName = 'move';

      var box2 = document.getElementById('box2');
      box2.addEventListener('animationstart', function() {
        box2.style.display = 'none';
        animationStarted();
      }, false);
      box2.style.animationName = 'move';
    }

    window.addEventListener('load', test.step_func(startTest), false);
  </script>
</head>
<div id="container">
  <div id="box1" class="box"></div>
  <div id="box2" class="box"></div>
</div>
<div id="results"></div>
